import router from '@/router/index'
import { getToken } from './composables/cookie'
import { hidePageLoading, showMessage, showPageLoading } from './composables/util'
import { useBlogSettingsStore } from '@/stores/blogsettings'

// 全局路由前置守卫
router.beforeEach((to, from, next) => {
  // 展示页面加载 Loading
  showPageLoading()
  // 若用户想访问后台（以 /admin 为前缀的路由）
  // 校验是否登录，未登录强制跳转登录页
  const token = getToken()
  if (!token && to.path.startsWith('/admin')) {
      // 如果token不存在且访问路径以admin为前缀
      showMessage('请先登录', 'warning')
      next({ path: '/login' })
  } else if (token && to.path == '/login') {
      // 如果已登录且重复访问登录页
      showMessage('请勿重复登录', 'warning')
      // 跳转后台首页
      next({ path: '/admin/index' })
  } else if (!to.path.startsWith('/admin')) {
      // 如果访问非 /admin 前缀的路由  也就是访问前台
      const blogSettingsStore = useBlogSettingsStore()
      // 获取博客设置信息设置到store里
      blogSettingsStore.getBlogSettings()
      next()
  } else {
      next()
  }
})

// 全局路由后置钩子
router.afterEach((to, from) => {
  // 动态设置页面的Title
  const title = (to.meta.title ? to.meta.title : '') + ' - YmBlog'
  document.title = title

  // 隐藏页面加载 Loading
  hidePageLoading()
})
